﻿Public Class xtf_ABMnotadecredito

    Dim ulg_row As DataRow
    Dim obj_documento As cls_documento_ = Nothing
    Dim dtt_documentodetalle_ As DataTable
    Dim dtt_documentoalteracion_ As DataTable

    Public Sub New()
        InitializeComponent()
        dtp_Fecha.DateTime = Now
        Cargarcliente_()
        AgregarValidaciones()
    End Sub

    Public Overrides Sub CargarObjetos()

    End Sub

    Private Sub Cargarcliente_()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_cliente.EditValue
        Dim cliente_ As New cls_cliente_
        cliente_.CargarTodos(True)
        cargarCombo(cbo_cliente, cliente_.Items)
        cbo_cliente.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_cliente.EditValue)
    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado
            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"
            obj_documento = New cls_documento_
            btn_Registro.Enabled = False

            'Numeracion por parametro
            '  Dim parametro As New cls_config_parametro_
            ' parametro.Buscar("proximoNumeroCompra")
            'txt_numero.Text = parametro.valor

            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef documento As cls_documento_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_documento) Then
            obj_documento = New cls_documento_
        End If
        obj_documento = documento
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_documento.ToString
        txt_ID.Text = obj_documento.iddocumento
        txt_subnumero.Text = obj_documento.puntoventa
        'cbo_tipo.SelectedIndex = obj_documento.tipo
        dtp_Fecha.DateTime = obj_documento.fecha
        txt_numero.Text = obj_documento.numero
        txt_observaciones.Text = obj_documento.observaciones
        If Not IsNothing(obj_documento.tercero) Then
            Dim cliente As New cls_cliente_
            cliente.BuscarXidtercero(obj_documento.idtercero)
            cbo_cliente.EditValue = cliente.idcliente
        End If

        cbo_transporte.EditValue = documento.idtransporte

        txt_direccion.Text = obj_documento.direccion

        If Not IsNothing(obj_documento.documentodetalle_) Then
            If Not IsNothing(obj_documento.documentodetalle_.Items) Then
                For Each documentodetalle As cls_documentodetalle_ In obj_documento.documentodetalle_.Items
                    txt_descripciondetalle.Text = documentodetalle.descripcion
                    txt_importedetalle.Text = documentodetalle.valor
                    txt_descripciondetalle.Text = documentodetalle.nombre
                    txt_iddocumentodetalle.Text = documentodetalle.iddocumentodetalle
                Next
            End If
        End If

        Dim parametro As New cls_config_parametro_
        parametro.Buscar("rubroPrincipal")
        Dim nombreRubroPrincipal As String = parametro.valor

       

        'txt_Descuento.Text = Math.Round(obj_documento.descuento, int_cantdecimales)
        'txt_DescuentoP.Text = Math.Round(obj_documento.descuentoP, int_cantdecimales)
        'txt_Recargo.Text = Math.Round(obj_documento.recargo, int_cantdecimales)
        'txt_RecargoP.Text = Math.Round(obj_documento.recargoP, int_cantdecimales)

        If obj_documento.numero <> 0 Then
            lcg_1.Enabled = False
        End If
        btn_Registro.Enabled = True

        obj_documento.moneda = Nothing
        obj_documento.tercero = Nothing
        obj_documento.documentodetalle_ = Nothing
        obj_documento.registro = Nothing
        obj_documento.asiento = Nothing
        btn_filtrar.Enabled = True

        Me.Show()

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean
        'If cbo_moneda.Enabled = False Then
        '    ErrManagerShow("001015")
        '    Return False
        'End If
        If Not cbo_cliente.Enabled Then
            ErrManagerShow("001027", Me)
            Return False
        End If
        'If Not cbo_condicioniva.Enabled Then
        '    Return False
        'End If
        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then

            obj_documento.tipodocumento = cls_documento_.enu_tipodocumento.NotaCredito
     
            obj_documento.fecha = dtp_Fecha.DateTime
            obj_documento.puntoventa = txt_subnumero.Text
            obj_documento.numero = txt_numero.Text
            obj_documento.idtransporte = cbo_transporte.EditValue
            obj_documento.observaciones = txt_observaciones.Text
            obj_documento.razonsocial = cbo_cliente.Text
            obj_documento.direccion = txt_direccion.Text
            obj_documento.tipo = cls_documento_.enu_tipo.B
            If cbo_cliente.EditValue <> 0 Then
                Dim cliente As New cls_cliente_
                cliente.Buscar(cbo_cliente.EditValue)
                obj_documento.idtercero = cliente.idtercero
                If Not IsNothing(cliente.tercero.condicioniva) Then
                    If cliente.tercero.condicioniva.documentoA Then
                        obj_documento.tipo = cls_documento_.enu_tipo.A
                    Else
                        obj_documento.tipo = cls_documento_.enu_tipo.B
                    End If
                End If
            Else
                obj_documento.idtercero = 0
            End If
    

            obj_documento.idcondicioniva = 0 'CType(cbo_condicioniva.SelectedItem, cls_condicioniva_).idcondicioniva

            Dim moneda As New cls_moneda_
            moneda.MonedaLocal()
            obj_documento.idmoneda = moneda.idmoneda
            'obj_documento.cotizacionfecha = dpt_cotizacionfecha.DateTime
            'obj_documento.cotizacionvalor = txt_cotizacionvalor.Text

            obj_documento.descuento = 0 'txt_Descuento.Text
            obj_documento.descuentoP = 0 'txt_DescuentoP.Text
            obj_documento.recargo = 0 'txt_Recargo.Text
            obj_documento.recargoP = 0 'txt_RecargoP.Text

            obj_documento.vencimiento = obj_documento.fecha.Date
            obj_documento.vencimientore = obj_documento.fecha.Date


            'Guardo documentodetalle------------------------------------------------------
            If IsNothing(obj_documento.documentodetalle_) Then
                obj_documento.documentodetalle_ = New cls_documentodetalle_
            End If
            If IsNothing(obj_documento.documentodetalle_.Items) Then
                obj_documento.documentodetalle_.Items = New Collections.Generic.List(Of cls_documentodetalle_)
            End If
            obj_documento.documentodetalle_.Items = New Collections.Generic.List(Of cls_documentodetalle_)
            Dim elemento As New cls_documentodetalle_
            elemento.descripcion = txt_descripciondetalle.Text
            elemento.cantidad = 1
            elemento.valor = txt_importedetalle.Text
            elemento.valorfinal = txt_importedetalle.Text
            elemento.nombre = txt_descripciondetalle.Text
            elemento.iddocumentodetalle = txt_iddocumentodetalle.Text
            elemento.iddocumento = obj_documento.iddocumento
            obj_documento.documentodetalle_.Items.Add(elemento)

            'Crea asiento cuenta corriente---------------------------------------------------------
            If IsNothing(obj_documento.asiento) Then
                obj_documento.asiento = New cls_asiento_
            End If
            obj_documento.asiento.importe = txt_importedetalle.Text
            obj_documento.asiento.tipoimporte = cls_asiento_.enu_tipoimporte.Salida
            obj_documento.asiento.fecha = obj_documento.fecha.Date
            obj_documento.asiento.idtercero = obj_documento.idtercero
            Dim parametroConcepto As New cls_config_parametro_
            parametroConcepto.Buscar("conceptoCtaCteNotaCredito")
            obj_documento.asiento.idasientoconcepto = parametroConcepto.valor
            '--------------------------------------------------------------------------------------



            If txt_ID.Text = "" Then
                obj_documento.Nuevo(True)

                'Incrementa numeracion en parametro
                Dim parametro As New cls_config_parametro_
                parametro.Buscar("proximoNumeroCompra")
                parametro.valor += 1
                parametro.Modificar(parametro)

                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADOnotadecredito_).AgregarItem(obj_documento)
                End If
                Modificar(obj_documento, frm_listado, ulg_row)
            Else
                obj_documento.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_LISTADOnotadecredito_).ModificarItem(obj_documento, ulg_row)
                End If
                Modificar(obj_documento, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_documento.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_documento.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub

    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click

        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

    Private Sub cbo_cliente_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_cliente.EditValueChanged
        Dim cliente As New cls_cliente_
        If cliente.Buscar(cbo_cliente.EditValue) Then
            txt_telefono1.Text = ""
            txt_telefono2.Text = ""
            txt_direccion.Text = ""
            txt_localidad.Text = ""
            txt_condicioniva.Text = ""

            Dim lista As New cls_listaprecio_
            lista.CargarXidcliente(cliente.idcliente)
            cargarCombo(cbo_listaPrecio, lista.Items)

            If Not IsNothing(cliente.TerceroIva) Then
                txt_condicioniva.Text = cliente.TerceroIva.ToString
            End If

            If Not IsNothing(cliente.tercero.direccionprimario) Then
                txt_direccion.Text = cliente.tercero.direccionprimario.ToString
                If Not IsNothing(cliente.tercero.direccionprimario.localidad) Then
                    txt_localidad.Text = cliente.tercero.direccionprimario.localidad.ToString
                End If
            End If

            If Not IsNothing(cliente.tercero.telefono_) Then
                If Not IsNothing(cliente.tercero.telefono_.Items) Then
                    If Not IsNothing(cliente.tercero.telefono_.Items(0)) Then
                        txt_telefono1.Text = cliente.tercero.telefono_.Items(0).ToString
                        If cliente.tercero.telefono_.Items.Count > 1 Then
                            txt_telefono2.Text = cliente.tercero.telefono_.Items(1).ToString
                        End If
                    End If
                End If
            End If

        End If
    End Sub

   
    Private Sub TextEdit2_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_descripciondetalle.EditValueChanged

    End Sub
End Class